1. Field of the Invention
This invention relates generally to dual tone multiple frequency (DTMF) generation. More particularly, it relates to a method and apparatus allowing a processor (e.g., a digital signal processor) to behave as though it is a true dialer capable of seamlessly intermixing keypad input and automatic dialing, without the need for direct access to a keypad.
2. Background of Related Art
Digital telephone devices such as digital telephones and digital telephone answering devices have become commonplace. Such devices typically include a processor (e.g., a controller or microprocessor) for handling overall control of the telephone device, and another processor such as a DSP to handle time intensive tasks such as DTMF tone generation and/or detection.
DTMF tones (i.e., touch tones) are typically used to communicate information, e.g., a telephone number, over a telephone line. At first, external DTMF generator circuits were used to generate touch tone signals. The external DTMF generation circuit has since been replaced in many applications with DTMF generation application software within the code of a digital signal processor (DSP).
Accordingly, DTMF generation has since become a standard feature on many DSPs. In the drive to minimize the bill of materials for a particular system, more and more telephony designers are looking at the DSP to replace expensive external DTMF generators/dialers in products where a DSP is an essential part of the design (e.g., in a telephone answering device and/or a digital speakerphone).
Although the integration of DTMF generation within a DSP has reduced hardware costs, it has caused a substantial amount of cost in the development and handling of software necessary to guarantee that stringent regulatory timing requirements for the transmission of DTMF tones be adhered to. Such timing requirements include the minimum length of each DTMF tone, and the minimum length of the pause between each transmitted DTMF tone.
However, due to the stringent timing requirements of DTMF dialing, what might start as an inexpensive solution has the potential of quickly turning into an implementation nightmare for software engineers.
FIG. 1 shows a conventional system utilizing a controller to pass information to a DSP to generate a specific one of the sixteen or so conventional DTMF tones. For instance, a controller 14 including a timer 14a instructs a DSP 13 including a DTMF generator 11 to output a DTMF tone corresponding to a specific digit on a telephone line 12 through an appropriate telephone line interface 15 until instructed to stop. Thus, to dial a telephone number, the controller informs the DSP digit-by-digit to output DTMF tones corresponding to the telephone number.
Typically, the controller 14 communicates with the DSP 13 via a serial or parallel communication link. In this conventional system, the timing length of each DTMF tone signal, as well as the pauses between each DTMF tone signal, are controlled by the controller 14.
To transmit a DTMF tone signal, the controller 14 sends DTMF signal instructions to the DTMF tone generator 11 in the DSP, e.g. a code from 1 to 16. The DTMF tone generator 11 then processes the instruction by generating an appropriate DTMF tone signal for transmission on the telephone line 12 via a codec (which may be integrated in the DSP 13 or may be external to the DSP 13), and the telephone line interface 15.
However, although the conventional DSP generates DTMF tones on a telephone line, because the DTMF tones are output digit-by-digit, the timing of the output DTMF tones is ultimately controlled by the controller. Thus, the controller is conventionally responsible for maintaining the minimum length of time for each DTMF tone output, and for maintaining a minimum pause time between each DTMF tone output.
The timing complexity in DTMF tone signal generation is illustrated in FIG. 2.
In particular, in step 201, the controller 14 first receives data corresponding to a series of touch tone digits (e.g., a telephone number) from, e.g., a keypad, and transmits tone instructions to the DSP 13 based on the same.
In step 202, the controller 14 instructs the DTMF tone generator 11 in the DSP 13 to start generation of a particular DTMF tone corresponding to a first digit in the touch tone data.
In conventional systems, the controller 14 determines the timing of the DTMF touch tone signals. Thus, in step 203, the controller 14 determines if a minimum amount of time has elapsed, e.g., 100 milliseconds, to establish a minimum length of the DTMF tone signal.
After a sufficient amount of time has elapsed, the controller 14 instructs the DSP 13 to cease generation of the previously requested DTMF tone signal.
Step 206 determines if there are more digits in the touch tone data. If so, the process repeats, but with the controller 14 first ensuring that a minimum off time has elapsed as shown in step 205.
FIG. 2 is shown in simplistic form. In particular applications, the DSP may acknowledge receipt of instructions from the controller 14.
Thus, based on the particular timing requirements for the applicable region or country, the conventional controller 14 must determine and ensure a minimum timing, both as to the length of the DTMF tone and as to the minimum pauses therebetween. Accordingly, conventional digital telephone systems have a timing complexity which is exacerbated by at least two factors. First, the controller may be busy processing other tasks while simultaneously determining the timing of generation of the DTMF signal instructions. Secondly, the DSP may be busy and therefore not be able to send an acknowledgment at the time that the controller determines that the next DTMF signal instruction should be sent, therefore requiring the instruction to be resent. Thus, using current technology, the use of a DSP for DTMF generation is complicated by the fact that either or both a DSP and a controller may be busy with other tasks at the time that the next DTMF tone transmission or tone stoppage should take place.
It would prove to be a fairly expensive item if all the DSP performed was DTMF tone generation. Thus, the DSP includes modules or other software to handle other tasks such as voice compression/decompression. Unfortunately, since the DSP is also used for functions other than generating DTMF, the DSP may be busy at the specific time that the controller desires a DTMF tone to be output.
The conventional controller may output a request to the DSP, then wait for confirmation that the tone is being output. Then, after a sufficient amount of time corresponding to a minimum length for DTMF tone transmission according to regulatory standards, the controller will again communicate with the DSP to request that the tone be stopped.
To avoid excessive wait cycles wherein the controller is merely waiting for the DSP to output a requested DTMF tone, the controller might merely output a DTMF tone request signal to the DSP on a periodic basis, e.g., every 100 millisecond, assuming that the DSP finally got to output the previously requested DTMF tone.
Unfortunately, control of DTMF tone output by one processor for output by another processor inherently includes timing ‘jitter’ or differences between the length of each DTMF tone and the pauses therebetween, particularly as the workload and interrupt servicing of the DSP increases. Older systems utilizing external DTMF generators did not exhibit these timing differences because conventional DTMF generators were dedicated devices for generating the requested DTMF tones only.
Accordingly, while the microcontroller tries to maintain accurate and consistent digit/pause periods by sending timely start/stop DTMF generator commands to the DSP, often the resulting DTMF digits output to the telephone line do not comply with the regulatory requirements for accuracy and consistency. This is because the DSP is an independent device running independent software algorithms to the microcontroller and its readiness to receive commands as well as command execution speed vary depending on the current task being processed (e.g., background memory management, signal processing, etc.). The problem is worse still in PC telephony applications where the controlling software is unable to keep accurate timing due to the multi-tasking nature of PC processors.
Others have attempted to solve the timing problems associated with dialing using a processor input to a DSP by implementing a speed dial feature. In this implementation, much like a memory telephone, the processor is allowed to store several digit sequences into a reserved portion of random access memory (RAM) in the DSP, typically up to a defined maximum of, e.g., 16 digits for each digit sequence. Digit/pause timing is pre-programmed by the processor.
Using a single command such as “DIAL LOCATION 3”, the processor generates accurate and consistent DTMF digit commands to DSP, which in turn generates the DTMF tones on the telephone line consistent with the timing set forth by the processor. Unfortunately, a problem with this solution is that it does not allow for the possibility of manual dialing on a keypad where digits are dialed on the fly, at varying lengths.
There is thus a need for a method and apparatus to free the microprocessor from maintaining timing requirements with respect to dialing.